MongoDB তে Pipeline এবং Stage অ্যাগ্রিগেশন অপারেশন তৈরির মূল অংশ। অ্যাগ্রিগেশন পিপলাইন ব্যবহার করে আপনি ডেটার উপর বিভিন্ন অপারেশন (যেমন: ফিল্টার, গ্রুপ, সোর্ট, ইত্যাদি) একে একে কার্যকর করতে পারেন। MongoDB অ্যাগ্রিগেশন পিপলাইন খুবই শক্তিশালী এবং ফ্লেক্সিবল, যা ডেটাকে বিভিন্নভাবে প্রক্রিয়া করতে সক্ষম।
1. Pipeline
MongoDB তে Pipeline হল একটি সিরিজ বা ধারাবাহিক স্টেজের একটি সেট, যা ডেটার উপর বিভিন্ন ধরনের প্রক্রিয়া (অপারেশন) চালানোর জন্য ব্যবহৃত হয়। প্রতিটি পিপলাইন একাধিক স্টেজের সমষ্টি হয়, এবং প্রতিটি স্টেজ আগের স্টেজের আউটপুটকে ইনপুট হিসেবে গ্রহণ করে।
MongoDB অ্যাগ্রিগেশন পিপলাইন ব্যবহার করে আপনি বিভিন্ন অপারেশন (যেমন: match, group, sort) একে একে ডেটার উপর চালাতে পারেন এবং শেষে একটি প্রক্রিয়া করা ফলাফল পেতে পারেন।
পিপলাইন অপারেশনটি বিভিন্ন স্টেজের মাধ্যমে ডেটার উপর একাধিক কাজ চালানোর সুযোগ দেয়। পিপলাইনে অন্তর্ভুক্ত স্টেজগুলি খুবই নমনীয় এবং কার্যকরীভাবে ডেটা বিশ্লেষণ করতে সহায়তা করে।
2. Stage
Stage হল একটি নির্দিষ্ট অপারেশন যা MongoDB অ্যাগ্রিগেশন পিপলাইনে চলে। প্রতিটি স্টেজ একটি নির্দিষ্ট কাজ সম্পাদন করে এবং পিপলাইনের পরবর্তী স্টেজে ফলাফল সরবরাহ করে। MongoDB অ্যাগ্রিগেশন পিপলাইনে ব্যবহৃত বেশ কিছু স্টেজ রয়েছে, যার মধ্যে সবচেয়ে সাধারণ স্টেজগুলির মধ্যে উল্লেখযোগ্য:
$match: একটি স্টেজ যা কুয়েরি শর্তের মাধ্যমে ডেটা ফিল্টার করে। এটি সাধারণতfind()কুয়েরির মতো কাজ করে এবং ডেটাকে কন্ডিশন অনুযায়ী ফিল্টার করে।{ $match: { age: { $gte: 30 } } }এই স্টেজে
ageএর মান ৩০ বা তার বেশি হলে ডেটা মেলে।$group: ডেটাকে গ্রুপ করার জন্য ব্যবহৃত হয়। এটি বিশেষত ব্যবহৃত হয় গাণিতিক অপারেশন (যেমন: গড়, সংখ্যা গণনা, সর্বোচ্চ মান, ইত্যাদি) করার জন্য।{ $group: { _id: "$age", total: { $sum: 1 } } }এখানে
ageঅনুযায়ী ডেটা গ্রুপ করে এবং প্রতিটি গ্রুপের জন্য মোট সংখ্যা গণনা করা হয়।$sort: ডেটাকে সারণী (ascending) বা অবতরণী (descending) আকারে সাজানোর জন্য ব্যবহৃত হয়।{ $sort: { age: 1 } }এখানে
ageএর উপর ডেটা সারণীভাবে সাজানো হচ্ছে (ascending order)।$limit: ডেটার সংখ্যা সীমিত করতে ব্যবহৃত হয়। এই স্টেজটি একাধিক ডেটা আইটেম থেকে একটি নির্দিষ্ট সংখ্যক আইটেম নির্বাচন করতে ব্যবহার করা হয়।{ $limit: 5 }এই স্টেজটি ডেটার প্রথম ৫টি আইটেম নির্বাচন করবে।
$skip: একটি নির্দিষ্ট সংখ্যক ডেটা আইটেম উপেক্ষা (skip) করতে ব্যবহৃত হয়।{ $skip: 5 }এই স্টেজটি প্রথম ৫টি আইটেম স্কিপ করে পরবর্তী আইটেমগুলো দেখাবে।
$project: ডেটার ফিল্ড সমূহকে কাস্টমাইজ করে। এটি ডেটার কিছু ফিল্ডকে অন্তর্ভুক্ত বা বাদ দিতে ব্যবহৃত হয়।{ $project: { name: 1, age: 1 } }এখানে
nameএবংageফিল্ডসমূহকে প্রজেক্ট করা হচ্ছে, অন্য ফিল্ডসমূহ বাদ দেওয়া হচ্ছে।
3. অ্যাগ্রিগেশন পিপলাইন স্টেজের সমন্বয়
MongoDB তে অ্যাগ্রিগেশন পিপলাইন একাধিক স্টেজের সমন্বয়ে তৈরি হয়, এবং প্রত্যেকটি স্টেজের আউটপুট পরবর্তী স্টেজে ইনপুট হিসেবে ব্যবহার হয়। একাধিক স্টেজ ব্যবহার করে আপনি ডেটা বিশ্লেষণ করতে পারেন, ডেটাকে সাজাতে পারেন, গ্রুপ করতে পারেন, এবং আরও অনেক কিছু।
একটি উদাহরণ অ্যাগ্রিগেশন পিপলাইন দেখুন, যা age অনুযায়ী গ্রুপ করে এবং তারপর সেগুলোকে সঠিকভাবে সাজায়:
db.users.aggregate([
{ $match: { age: { $gte: 18 } } }, // বয়স ১৮ বা তার বেশি হওয়া ডেটা ফিল্টার করুন
{ $group: { _id: "$age", total: { $sum: 1 } } }, // বয়স অনুযায়ী গ্রুপ করুন এবং মোট গণনা করুন
{ $sort: { total: -1 } } // মোট গননা অনুযায়ী অবতরণীভাবে সাজান
])
এই পিপলাইনে:
- প্রথমে
$matchস্টেজ ব্যবহার করে বয়স ১৮ বা তার বেশি হওয়া ডেটা ফিল্টার করা হয়েছে। - তারপর
$groupস্টেজের মাধ্যমে গ্রুপ করা হয়েছেageঅনুসারে এবং প্রতিটি গ্রুপের মোট সংখ্যা গণনা করা হয়েছে। - অবশেষে,
$sortস্টেজ ব্যবহার করে মোট সংখ্যার উপর অবতরণীভাবে সাজানো হয়েছে।
4. পিপলাইন এবং স্টেজের মধ্যে পার্থক্য
- Pipeline: একটি পিপলাইন হলো একাধিক স্টেজের একটি ধারাবাহিক সেট যা একে একে ডেটার উপর অপারেশন চালায়। এটি MongoDB তে অ্যাগ্রিগেশন অপারেশন করার প্রক্রিয়া।
- Stage: একটি স্টেজ হলো একটি নির্দিষ্ট অপারেশন যা MongoDB অ্যাগ্রিগেশন পিপলাইনে চলে। প্রতিটি স্টেজ একটি নির্দিষ্ট কাজ সম্পাদন করে এবং পরবর্তী স্টেজের ইনপুট হিসেবে কাজ করে।
সারাংশ
MongoDB অ্যাগ্রিগেশন পিপলাইন একটি শক্তিশালী ফিচার, যা ডেটা প্রক্রিয়া এবং বিশ্লেষণে সহায়তা করে। একটি পিপলাইন একাধিক স্টেজের মাধ্যমে ডেটার উপর কাজ করে এবং প্রতিটি স্টেজের ফলাফল পরবর্তী স্টেজে ইনপুট হিসেবে ব্যবহার হয়। Pipeline এবং Stage এর ধারণা MongoDB তে ডেটাবেস ব্যবস্থাপনায় নমনীয়তা এবং স্কেলেবিলিটি নিশ্চিত করে, যা বিশেষত বড় পরিসরের ডেটা বিশ্লেষণের জন্য উপযোগী।
Read more